package com.jyw.business.ins.domain.dto.web;

import com.jyw.business.ins.domain.InsConfigItem;
import com.jyw.common.annotation.Conversion;
import com.jyw.common.constant.SysDictTypeConstant;
import com.jyw.common.enums.ConversionType;
import com.jyw.common.utils.bean.BeanUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author 沈峻
 * @ClassName ItemAddDto
 * @Description 巡检项新增请求实体
 * @Date 2023/9/20 17:30
 **/
@Data
@ApiModel("巡检项新增请求实体")
public class ItemAddDto {

    /** 配置主表ID（资产 单元） */
    @ApiModelProperty("配置主表ID（资产 单元）")
    @NotNull(message = "配置主表ID不能为空")
    private Long parentId;

    /** 配置类型（1资产类型 2巡检单元） */
    @ApiModelProperty("配置类型（1资产类型 2巡检单元）")
    @NotNull(message = "配置类型不能为空")
    private Integer parentType;

    /** 巡检项名称 */
    @ApiModelProperty("巡检项名称")
    private String itemName;

    /** 巡检项类型（1数值型 2选项型） */
    @ApiModelProperty("巡检项类型（1数值型 2选项型）")
    private Integer itemType;

    /** 巡检项单位（数据字典） */
    @ApiModelProperty("巡检项单位（数据字典）")
    private String itemUnit;

    /** 阈值最小值 */
    @ApiModelProperty("阈值最小值")
    private BigDecimal minValue;

    /** 阈值最大值 */
    @ApiModelProperty("阈值最大值")
    private BigDecimal maxValue;

    /** 默认值数值 */
    @ApiModelProperty("默认值数值")
    private BigDecimal defaultValue;

    /** 选项内容（多条用逗号隔开） */
    @ApiModelProperty("选项内容（多条用逗号隔开）")
    private List<String> optionContent;

    /** 默认值选项 */
    @ApiModelProperty("默认值选项")
    private String defaultOption;

    /** 异常值选项（多条用逗号隔开） */
    @ApiModelProperty("异常值选项")
    private List<String> errorOption;

    /** 是否启用（1是 0否） */
    @ApiModelProperty("是否启用（1是 0否）")
    private Integer isEnable;

    public InsConfigItem buildConfigItem(){
        InsConfigItem item = new InsConfigItem();
        BeanUtils.copyProperties(this,item);
        //如果选项不为空
        if(!CollectionUtils.isEmpty(getOptionContent())){
            item.setOptionContent(getOptionContent().stream().collect(Collectors.joining(",")));
        }
        //如果异常值选项不为空
        if(!CollectionUtils.isEmpty(getErrorOption())){
            item.setErrorOption(getErrorOption().stream().collect(Collectors.joining(",")));
        }
        return item;
    }

}
